#!/usr/bin/env python3
"""
菜单初始化脚本
添加基础菜单数据供测试使用
"""

from app import create_app, db
from app.models.menu import Menu

def init_menus():
    """初始化基础菜单数据"""
    app = create_app()
    
    with app.app_context():
        # 检查是否已经有菜单数据
        if Menu.query.count() > 0:
            print("菜单数据已存在，跳过初始化")
            return
        
        # 创建基础菜单数据
        menus = [
            # 一级菜单
            {
                'name': '系统管理',
                'icon': 'setting',
                'path': '/system',
                'order_num': 1,
                'visible': True,
                'status': True,
                'parent_id': None
            },
            {
                'name': '用户管理',
                'icon': 'user',
                'path': '/users',
                'order_num': 2,
                'visible': True,
                'status': True,
                'parent_id': None
            },
            {
                'name': '内容管理',
                'icon': 'document',
                'path': '/content',
                'order_num': 3,
                'visible': True,
                'status': True,
                'parent_id': None
            }
        ]
        
        # 添加一级菜单
        menu_ids = {}
        for menu_data in menus:
            menu = Menu(**menu_data)
            db.session.add(menu)
            db.session.flush()  # 获取ID
            menu_ids[menu_data['name']] = menu.id
            print(f"创建一级菜单: {menu_data['name']}")
        
        # 二级菜单
        sub_menus = [
            # 系统管理子菜单
            {
                'name': '管理员管理',
                'icon': 'user-filled',
                'path': '/system/admins',
                'order_num': 1,
                'visible': True,
                'status': True,
                'parent_id': menu_ids['系统管理']
            },
            {
                'name': '角色管理',
                'icon': 'avatar',
                'path': '/system/roles',
                'order_num': 2,
                'visible': True,
                'status': True,
                'parent_id': menu_ids['系统管理']
            },
            {
                'name': '菜单管理',
                'icon': 'menu',
                'path': '/system/menus',
                'order_num': 3,
                'visible': True,
                'status': True,
                'parent_id': menu_ids['系统管理']
            },
            {
                'name': '部门管理',
                'icon': 'office-building',
                'path': '/system/departments',
                'order_num': 4,
                'visible': True,
                'status': True,
                'parent_id': menu_ids['系统管理']
            },
            # 用户管理子菜单
            {
                'name': '用户列表',
                'icon': 'user',
                'path': '/users/list',
                'order_num': 1,
                'visible': True,
                'status': True,
                'parent_id': menu_ids['用户管理']
            },
            {
                'name': '用户审核',
                'icon': 'circle-check',
                'path': '/users/audit',
                'order_num': 2,
                'visible': True,
                'status': True,
                'parent_id': menu_ids['用户管理']
            },
            # 内容管理子菜单
            {
                'name': '内容列表',
                'icon': 'document',
                'path': '/content/list',
                'order_num': 1,
                'visible': True,
                'status': True,
                'parent_id': menu_ids['内容管理']
            },
            {
                'name': '内容审核',
                'icon': 'select',
                'path': '/content/audit',
                'order_num': 2,
                'visible': True,
                'status': True,
                'parent_id': menu_ids['内容管理']
            }
        ]
        
        # 添加二级菜单
        for menu_data in sub_menus:
            menu = Menu(**menu_data)
            db.session.add(menu)
            print(f"创建二级菜单: {menu_data['name']}")
        
        # 提交到数据库
        db.session.commit()
        print("菜单初始化完成！")
        
        # 显示菜单结构
        print("\n菜单结构:")
        root_menus = Menu.query.filter_by(parent_id=None).order_by(Menu.order_num).all()
        for menu in root_menus:
            print(f"├── {menu.name} ({menu.path})")
            for child in sorted(menu.children, key=lambda x: x.order_num):
                print(f"│   ├── {child.name} ({child.path})")

if __name__ == '__main__':
    init_menus() 